home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol04 / 01b / macsl / mpmfig8.txt < prev    next >
Text File  |  1988-10-27  |  1KB  |  54 lines

  1. HPS APIENTRY WinGetPS( hwnd )
  2.     HWND        hwnd;
  3. {
  4.     GrafPtr     pgraf;
  5.     RgnHandle   hrgn;
  6.     Rect        rect;
  7.  
  8.     ASSERT( ! ( _ps1.flags & PSF_INUSE ),
  9.             "WinGetPS: PS already in use" );
  10.  
  11.     if( ! hwnd  ||  hwnd == HWND_DESKTOP )
  12.       hwnd = _hwndDesktop;
  13.  
  14.     if( ! MpmValidateWindow(hwnd) )
  15.       return NULL;
  16.  
  17.     /* Clear the cache PS and mark it as in use */
  18.  
  19.     memzero( &_ps1 );
  20.     _ps1.hwnd = hwnd;
  21.     _ps1.flags |= PSF_INUSE;
  22.  
  23.     /* Copy the Mac window's GrafPort */
  24.  
  25.     if( hwnd == _hwndDesktop )
  26.       GetWMgrPort( &pgraf );
  27.     else
  28.       pgraf = &PWINOFHWND(hwnd)->port;
  29.  
  30.     _ps1.port = *pgraf;
  31.  
  32.     _ps1.port.visRgn = NewRgn();
  33.     CopyRgn( pgraf->visRgn, _ps1.port.visRgn );
  34.  
  35.     _ps1.port.clipRgn = NewRgn();
  36.     CopyRgn( pgraf->clipRgn, _ps1.port.clipRgn );
  37.  
  38.     /* Clip the visRgn down to this window's rectangle in case it's
  39.        a child window */
  40.  
  41.     if( ! ( MYWNDOF(hwnd).flStyle & WS_PARENTCLIP ) )
  42.     {
  43.       hrgn = NewRgn();
  44.       MpmQueryMacRect( hwnd, &rect );
  45.       RectRgn( hrgn, &rect );
  46.       SectRgn( _ps1.port.visRgn, hrgn, _ps1.port.visRgn );
  47.       DisposeRgn( hrgn );
  48.     }
  49.  
  50.     /* Handle WS_CLIPCHILDREN and WS_CLIPSIBLINGS here? */
  51.  
  52.     return _hps1;
  53. }
  54.